Visualizing and evaluating 3d cross-sections

ABSTRACT

Methods, systems, and computer-readable media for generating a cross-section of a 3D model are disclosed. An example method includes determining a cross-section plane intersecting the 3D model, performing ray-tracing by passing each of a plurality of rays through a corresponding pixel of a viewing plane such that each ray intersects the cross-section plane, determining one or more rays that are within a threshold distance of the 3D model at their respective points of intersection with the cross section plane, and highlighting pixels corresponding to the determined rays.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of, claims the benefit of andpriority to U.S. patent application Ser. No. 17/162,577, filed on Jan.29, 2021, which claims the benefit of and priority to U.S. ProvisionalPatent Application No. 62/967,490, filed Jan. 29, 2020, both of whichare incorporated by reference in their entirety.

FIELD OF THE DISCLOSURE

This disclosure relates generally to three-dimensional (3D) modeling,and, more particularly, to methods and systems for visualizing andevaluating the intersection of a 3D polygonal model with a 3Dcross-section plane.

BACKGROUND

3D geometric models are often used to design products for manufacture(e.g., in architecture, construction, real estate, gaming, healthcare,scientific visualization, movies, etc.). During the design process,iterative changes to a 3D model are often made to develop a final designthat can be used by engineers, technicians, draftspeople, manufacturers,and more. During the design process, it can be beneficial for thedesigner of the 3D model to be able to manipulate the 3D model inreal-time, take measurements between various surfaces of the 3D model,and otherwise interact with the 3D model. In particular cases, it may bebeneficial for the designer of the 3D model to be able to take across-section of the 3D model, and interact with the surfaces of themodel that lay on the plane of the cross-section.

SUMMARY

Examples disclosed herein may enable the visualization and evaluation ofthe intersection of a 3D polygonal model with a 3D cross-section plane.In particular, a method of generating a cross-section of a 3D model isdisclosed. The method of generating the cross-section includesdetermining a cross-section plane intersecting the 3D model. The methodalso includes performing ray-tracing by passing each of a plurality ofrays through a corresponding pixel of a viewing plane such that each rayintersects the cross-section plane. The method further includesdetermining one or more rays that are within a threshold distance of the3D model at their respective points of intersection with the crosssection plane. And the method still further includes highlighting pixelscorresponding to the determined rays the same color along and within thethreshold distance of the plane.

In another example, a non-transitory, computer-readable medium, hasinstructions stored thereon that, when, executed by a processor, causethe performance of a set of acts for generating a cross-section of a 3Dmodel. The set of acts includes determining a cross-section planeintersecting the 3D model, performing ray-tracing by passing each of aplurality of rays through a corresponding pixel of a viewing plane suchthat each ray intersects the cross-section plane, determining one ormore rays that are within a threshold distance of the 3D model at theirrespective points of intersection with the cross section plane, andhighlighting pixels corresponding to the determined rays the same color.

In a third example, a system for generating a cross-section of a 3Dmodel is disclosed. The system includes a memory configured to storedata corresponding to the 3D model, and a processor. The processor isconfigured to determine a cross-section plane intersecting the 3D model,perform ray-tracing by passing each of a plurality of rays through acorresponding pixel of a viewing plane such that each ray intersects thecross-section plane, determine one or more rays that are within athreshold distance of the 3D model at their respective points ofintersection with the cross-section plane, and highlight pixelscorresponding to the determined rays the same color.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a perspective view of an example cross-section of a3D model according to embodiments of the present disclosure.

FIG. 2 illustrates a front view of the cross-section of the 3D model ofFIG. 1 .

FIG. 3 illustrates a front view of a stencil comprising the intersectionbetween the 3D model and the cross-section plane of FIG. 1 .

FIG. 4 illustrates an example computing device according to examples ofthe present disclosure.

FIG. 5 is flowchart representative of machine readable instructions thatmay be executed by one or more processors, according to embodiments ofthe present disclosure.

The figures are not to scale. Wherever possible, the same referencenumbers will be used throughout the drawings and accompanying writtendescription to refer to the same or like parts.

DETAILED DESCRIPTION

As noted above, it can be beneficial for a designer of a 3D model, orother interested parties, to be able to manipulate and interact with the3D model. In particular, it can be beneficial to view a cross-section ofthe 3D model, to reveal internal components and their interactions witheach other. Providing a cross-section of the 3D model can enable adesigner to interact with, analyze, and evaluate the 3D model byselecting surfaces, measuring distances between one or more selectedsurfaces or points, ensuring clearance between various components, andmore.

In general, the term 3D model as used herein may refer to a mathematicalrepresentation of the surfaces of an object in three dimensions. The 3Dmodel may comprise a single component, or may comprise a plurality ofcomponents. In some examples, the plurality of components may beconfigured to move with respect to each other, such as by rotating,sliding, bending, and more. Each component may comprise a particulargeometry, and may be made from one or more surfaces connected to eachother. Each of the surfaces may be defined mathematically, such that thesurface may exist in only two dimensions (e.g., it may be infinitelythin in the third dimension).

In some embodiments, the 3D model may be rendered on a screen using raytracing. Ray tracing, as used herein, may be understood as a renderingtechnique for generating an image by tracing the path of light (i.e.,rays) as pixels in a viewing plane. Each ray is cast from theperspective of a corresponding pixel of the viewing plane. Based on thefirst intersection of the ray with either the 3D model or thebackground, the corresponding pixel is displayed using a particularcolor, shading, etc. For example, if a first ray is cast from a firstpixel and intersects a first component of the 3D model, the first pixelmay be colored red. If a second ray is cast from a second pixel andintersects a second component of the 3D model, the second pixel may becolored blue. When all the rays are cast, they can result in an image inwhich the first component is colored red, and the second component iscolored blue.

Referring now to FIGS. 1-3 , an example embodiment is illustrated inwhich a cross section is taken of a 3D model 100. The functionsdescribed herein, such as selecting a cross-section plane, ray tracing,and displaying the cross-section may be performed by a system thatincludes, among other things, a memory and a processor. The system mayinclude one or more computing devices, such as the computing devicedescribed with respect to FIG. 4 . In some examples, the system mayinclude a plurality of computing devices (e.g., a distributed system),wherein the 3D model is broken into component parts or shards to beanalyzed and processed independently from each other. This is discussedin further detail below.

In some examples, the processor is configured to (1) determine across-section plane intersecting the 3D model, (2) perform ray-tracingby passing each of a plurality of rays through a corresponding pixel ofa viewing plane such that each ray intersects the cross-section plane,(3) determine one or more rays that are within a threshold distance ofthe 3D model at their respective points of intersection with the crosssection plane, and (4) highlight pixels corresponding to the determinedrays the same color.

Regarding the first feature noted above, the embodiment shown in FIGS.1-3 illustrates that the processor may be configured to determine across-section plane 200 intersecting the 3D model 100.

In some examples, the cross-section plane 200 may be selected by a user,via a user interface of the system. The cross-section plane 200 may bepositioned at a midpoint of the 3D model 100 by default. In someexamples, the cross-section plane 200 may be set or positioned based ona selected component, surface, or other part of the 3D model 100. Forexample, a user may select a target surface, and the cross-section plane200 may be positioned at the midpoint of the target surface, an edge ofthe target surface, or otherwise at a position based on the targetsurface. In some examples, the position of the cross-section plane 200may be input by a user, such as via an input of a particular X, Y, Z,coordinate or distance. In some examples, the system may enable a userto change the position of the cross-section plane 200 in 3D space via aslider, arrow key, mouse, touch, or other user input.

Additionally, the cross-section plane 200 can be oriented in variousorientations with respect to the 3D model 100. For example, theorientation may be set as parallel to the viewing plane 300 by default,such that it is perpendicular to the view of the user. In some examples,the orientation of the cross-section plane 200 may be modified oradjusted by the user, such as via an input via a slider, arrow key,mouse, touch, or other user input. In some examples, the orientation ofthe cross-section plane can be set based on a selected component,surface, or other feature of the 3D model 100. For example, theorientation can “snap” to a particular selected surface, such that thecross-section plane 200 is oriented parallel to or tangent to theselected surface.

In some examples, the system may include a menu with selectable optionsfor a user to select, to enable the system to switch between variousmodes. For instance, there may be a default mode, a select componentmode, a select face mode, a select distance mode, a manual input mode,and more.

In some examples, the cross-section plane 200 defines a front side 202 aand a back side 202 b of the 3D model 100. The front side 202 a is theside of the 3D model 100 that is closer to the viewing plane 100. Theback side 202 b is the side of the 3D model that is opposite the viewingplane 100. It should be appreciated that the nomenclature “front side”and “back side” are used herein for example only. The front side andback side may be flipped, such that the front side is on the side of thecross-section plane 200 that is opposite the viewing plane 300. This canoccur, in particular, where the viewing plane is rotated around the 3Dmodel 100 to enable the user to view the back of the 3D model. In somecases, causing the viewing plane 300 to rotate around the 3D model 100can cause the front side 202 a and back side 202 b of the model toremain the same, such that the user is still able to view the back side202 b of the 3D model 100. Alternatively, in some examples causing theviewing plane 300 to rotate around the 3D model 100 can cause the frontside 202 a and back side 202 b of the model to flip, such that when theviewing plane 300 is located on the back side 202 b of the model, onlythe front side 202 a of the model is visible (i.e., the opposite of FIG.1 ).

In some examples, the cross-section plane 200 is defined mathematically,such that it is infinitely thin. Alternatively, the cross-section plane200 can be defined by use of a threshold distance therefrom in order tocreate a thickness for the cross-section plane 200. Further, as will bedescribed in more detail below, for each pixel where the ray intersectswith the 3D model at the cross-section plane 200, a threshold isdetermined and applied to create a specific threshold distance orthickness for the cross-section plane 200 for that pixel; as such, thecross-section plane 200 can have different effective thicknesses at the3D model intersection for each pixel.

The processor may also be configured to perform ray-tracing, by passingeach of a plurality of rays through a corresponding pixel of a viewingplane 300 such that each ray intersects the cross-section plane 200. Toperform the ray tracing, each ray (e.g., rays 310 a, 310 b, 310 c, and310 d) are cast from a corresponding pixel (e.g., pixels 320 a, 320 b,320 c, and 320 d) of the viewing plane 300. FIG. 1 illustrates that theviewing plane 300 includes only 64 pixels, however it should beappreciated that more or fewer pixels may be used.

In some examples, performing ray tracing includes casting a plurality ofrays, from the location of corresponding pixels, each in a straight linein 3D space. Each ray will eventually make contact with and/or intersectsomething (i.e., either the 3D model 100 or the background). Eachcorresponding pixel of the viewing plane 300 is then colored based onwhich part of the 3D model or the background that the ray intersects. Ifthe ray intersects with the 3D model at the cross section plane 200 orwithin a vicinity thereof, then coloring is applied at the intersectionto allow for enhanced visualization of the cross-section of the 3Dmodel.

In the present disclosure, one or more rays (e.g., rays 310 a, 310 b,and 310 c) are truncated such that each ray does not make contact withor intersect anything on the front side 202 a (space prior to the rayreaching the user selected or default location of the cross-sectionplane 200) of the 3D model 100. This enables the resulting image of theviewing plane 300 to bypass the components and surfaces of the 3D model100 that are located on the front side 202 a, and display the componentsand surfaces of the 3D model 100 on the back side 202 b, therebyenabling the display of the cross-section of the 3D model (i.e., theportions of the 3D model 100 at and beyond/behind the user selected ordefault location of the cross-section plane 200).

In some examples, during the ray tracing process, each ray continuesuntil its first intersection with the 3D model 100 or the background,wherein the first intersection is either in the cross-section plane 200,or on the back side 202 b of the 3D model 100. The color of the pixelcorresponding to the ray is then determined based on the intersection ofthat ray.

For example, as shown in FIG. 1 , a first ray 310 a is cast from pixel320 a, and intersects with the cross-section plane 200 at firstintersection point 220 a. The ray 310 a does not intersect with the 3Dmodel 100 at the intersection point 220 a, so the ray continues alongits trajectory. The ray 310 a intersects with the background, and thusthe pixel 320 a is colored white.

A second ray 310 b is cast from pixel 320 b, and intersects with thecross-section plane 200 at second intersection point 220 b. At thesecond intersection point 220 b, the ray 310 b intersects with the 3Dmodel, or is within a threshold distance of the 3D model (the thresholddistance is described in further detail below). In this instance, thecorresponding second pixel 320 b is colored blue, since pixel 320 bcorresponds to ray 310 b which intersects with the 3D model 100 (or iswithin a threshold distance of the 3D model 100) within thecross-section plane 200.

A third ray 310 c is cast from pixel 320 c, and intersects with thecross-section plane 200 at a third intersection point 220 c. At thethird intersection point 220 c, the third ray 310 c does not intersectwith the 3D model 100, nor is it within a threshold distance of the 3Dmodel 100. The third ray 310 c continues on its trajectory, eventuallyintersecting with the 3D model 100 at point 120 c. Point 120 ccorresponds to an interior surface of the 3D model 100, offset from thecross-section plane 200. As such, the third pixel 320 c is colored gray,based on the surface of the 3D model that intersects the third ray 310 cat point 120 c.

A fourth ray 310 d is cast from pixel 320 d, and intersects with thecross-section plane 200 at a fourth intersection point 220 d. At thefourth intersection point 220 d, the fourth ray 310 d does not intersectwith the 3D model 100. However, the fourth ray 310 d is within athreshold distance of the 3D model 100. The fourth pixel 320 d iscolored blue, since pixel 320 d corresponds to ray 310 d which is withina threshold distance of the 3D model 100, within the cross-section plane200.

As noted above, the pixel color for each of the pixels in the viewingplane 300 are determined based on, for each of the plurality of rayscorresponding to the pixels, an intersection of each of the plurality ofrays with the 3D model or background, and depending upon whether theintersection occurs in the cross-section plane or not.

The processor of the system is then configured to render the pixels ofthe viewing plane 300 as an image for the user to see.

As noted above, particularly with respect to the fourth ray 310 d, theprocessor may be configured to determine one or more rays that arewithin a threshold distance of the 3D model 100 at their respectivepoints of intersection with the cross-section plane 200. Because the 3Dmodel 100 and its geometry are defined by one or more mathematicalformulas, one or more surfaces of the 3D model may be infinitely thin.Depending on the angle at which a given surface is oriented with respectto the cross-section plane 200, a given ray may not intersect at all.This is because the resolution of the pixels, and/or spacing of the rays(i.e., resolution of the rays) is less than the infinite resolution ofthe 3D model 100.

For example, if a surface of the 3D model is perpendicular to but stillintersecting the cross section plane 200 (i.e., the surface appearsedge-on to a viewer), a given ray may extend through the cross-sectionplane 200 without intersecting the infinitely thin surface, and onlyfarther (or deeper) into the 3D model 100 make contact with a surface ofthe 3D model. If the pixel is colored based on the intersection fartheror deeper into the 3D model 100, it may give the false impression thatthe 3D model 100 does not intersect the cross-section plane at thatpixel.

To account for this, the processor may be configured to determine athreshold distance from the point of intersection between each ray andthe cross-section plane 200, such that if any part of the 3D model 100is located within the threshold distance, the pixel associated with thatray can be colored as if it intersected with the 3D model at thatintersection point.

In some examples, the threshold distance extends in two dimensions fromthe intersection point between the ray and the cross-section plane 200,within the cross-section plane 200.

Alternatively, in some examples, the threshold distance extends in twodimensions from the intersection point between the ray and thecross-section plane 200, perpendicular to the ray. Where the ray is castsuch that it is perpendicular to the cross-section plane (e.g., thecenter pixel where the viewing plane 300 and cross-section plane 200 areparallel), this threshold distance may be the same as the thresholddistance noted above. However, where the ray is cast such that itintersects the cross-section plane at an angle (e.g., a pixel on theperiphery of the viewing plane 300 where the viewing plane 300 andcross-section plane 200 are parallel, or any pixel of the viewing plane300 where the viewing plane 300 and cross-section plane 200 are notparallel) the threshold distance may extend at an angle with respect tothe cross-section plane 200.

Alternatively, in some examples, the threshold distance can extend inthree dimensions from the intersection point between the ray and thecross-section plane 200.

In some examples, the threshold distance can be based on a viewingdistance, wherein the viewing distance comprises a distance between thepixel of the viewing plane corresponding to the ray and the ray'sintersection with the cross-section plane. The threshold distance andthe viewing distance may have a direct relationship, such that thethreshold distance increases as the viewing distance increases. So, forinstance, if the cross-section plane 200 is parallel to the viewingplane 300 (e.g., the view shown in FIG. 2 ), rays corresponding topixels on the edge of the viewing plane may have a larger thresholddistance than rays corresponding to pixels in the middle. Additionally,where the cross-section plane 200 is oriented at an angle with respectto the viewing plane 300 (i.e., they are not parallel), rays thatintersect with the cross-section plane 200 closer to the viewing plane300 may have a smaller corresponding threshold distance than rays thatintersect with the cross-section plane 200 farther away from the viewingplane 300.

In some examples, the threshold distance can be one pixel's width, halfa pixel's width, or some other value. In some examples, a firstthreshold distance corresponding to a first pixel (and ray) may be set,and the other threshold distances corresponding to the other pixels (andrays) may be scaled accordingly based on their positions with respect tothe first pixel and intersection point of the ray. In other examples, amin/max range of threshold distances can be pre-computed based on thedistance of the viewing plane and the furthest extent of the modelrelative to the camera eye. For any given ray-plane intersection, alocal threshold value is computed via linear interpolation of thethreshold range using the distance of the intersection point from thecamera eye. This process ensures that the resulting highlight will havea consistent image pixel-width irrespective of the intersection point'sdistance to the eye.

In some examples, the threshold distance can depend upon one or moreother factors. For example, the system may include a distributedarchitecture, such that the 3D model is broken up into a plurality ofshards, each composed of a plurality of triangles. This distributednature is discussed in further detail below. The result of thedistributed nature, however, is that the threshold distance for aparticular ray (i.e., proximity calculation) can prioritize or optimizebased on distances within the same triangle, and within the same shard.

If a given ray does not intersect with the 3D model 100 at thecross-section plane 200, (and is similarly not within the thresholddistance of the 3D model 100 at this point), then the ray continues toextend on the back side 202 b of the 3D model 100 until the ray contactsthe 3D model 100 (or the background).

In some examples, the threshold distance is user configurable.

In some examples, the processor is also configured to highlight pixelscorresponding to rays that intersect with the 3D model 100 at thecross-section plane 200 (or are within the threshold distance at theintersection of the ray and the cross-section plane 200). All pixelscorresponding to rays that intersect the 3D model 100 at thecross-section plane 200 may be colored the same color, or highlightedthe same color, wherein the color is different from the color of themodel. These pixels may be termed a stencil 150. The stencil 150 isillustrated in FIG. 3 , showing in while only those pixels thatcorrespond to rays that intersect the 3D model, or are within athreshold distance of the 3D model, at the point of intersection withthe cross section plane 200.

In some examples, the processor may enable various functions based onthe ray tracing, rendering, stencil, and other features describedherein.

For example, the processor may enable pixel perfect selection of ageometric surface of the 3D model 100, in particular the part of thegeometric surface that lies on the cross-section plane 200, for exampleby comparing a position of a pointer (e.g., mouse icon, touch point,etc.) to the stencil 150. This may be accomplished in a similar mannerto the ray tracing operation described above, wherein a ray is cast fromthe position of the pointer, and the processor determines whether thereis any surface of the 3D model within a threshold distance of the ray atthe point of intersection with the cross-section plane 200. In thiscase, the threshold distance may be the same or different from thethreshold distance described above with respect to the ray tracingoperation. It may be beneficial to increase the threshold distanceduring the process of selecting a surface, in order to make it easierfor a user to select the desired surface.

In some examples, selecting a geometric surface comprises (1) selectinga pixel of the viewing plane, (2) determining a closest highlightedpixel corresponding to the selected pixel of the viewing plane, and (3)selecting the geometric surface of the 3D model corresponding to theclosest highlighted pixel.

The processor may also be configured to determine a distance between twogeometric surfaces of the 3D model 100. To accomplish this, two surfacesmay be selected, in a manner such as described above. Determining adistance between the first selected geometric surface and the secondselected geometric surface of the 3D model then includes (1) selecting afirst pixel of the viewing plane, (2) determining a first closesthighlighted pixel corresponding to the first selected pixel of theviewing plane, (3) selecting the first geometric surface of the 3D modelcorresponding to the first closest highlighted pixel, (4) selecting asecond pixel of the viewing plane, (5) determining a second closesthighlighted pixel corresponding to the second selected pixel of theviewing plane (6) selecting the second geometric surface of the 3D modelcorresponding to the second closest highlighted pixel, and (7) measuringthe distance between the selected first geometric surface and theselected second geometric surface.

Various other functions are possible as well by interacting with andanalyzing the stencil 150, in addition to the 3D model 100.

As noted above, the system of this disclosure may be configured tooperate using a plurality of computing devices in a distributed system.For example, the system may separate the 3D model into a plurality ofcomponent parts (e.g., shards). Then, separately for each of thecomponent parts, the system may (1) determine the cross-section planeintersecting the component part of the 3D model, (2) perform ray-tracingby passing each of the plurality of rays through the corresponding pixelof the viewing plane such that each ray intersects the cross-sectionplane, (3) determine one or more rays that are within the thresholddistance of the component part of the 3D model at their respectivepoints of intersection with the cross section plane, and (4) highlightpixels corresponding to the determined rays the same color. The systemmay then (5) combine the highlighted pixels from each of the two or morecomponent parts into a single image, which can then be displayed to auser.

Further details regarding the distributed nature of operation can befound in U.S. patent application Ser. No. 16/257,393, which isincorporated by reference in its entirety.

FIG. 4 illustrates a simplified block diagram of an example computingdevice 400 according to embodiments of the present disclosure. Computingdevice 400 may be configured to perform a variety of functions or acts,such as those described in this disclosure (and accompanying drawings).The computing device 400 may include various components, including forexample, a processor 410, memory 420, user interface 430, andcommunication interface 440, all communicatively coupled by system bus,network, or other connection mechanism 450. It should be understood thatexamples disclosed herein may refer to computing devices and/or systemshaving components that may or may not be physically located in proximityto each other. Certain embodiments may take the form of cloud basedsystems or devices, and the term “computing device” should be understoodto include distributed systems and devices (such as those based on thecloud), as well as software, firmware, and other components configuredto carry out one or more of the functions described herein.

Processor 410 may include a general purpose processor (e.g., amicroprocessor) and/or a special purpose processor (e.g., a digitalsignal processor (DSP)). Processor 410 may be any custom made orcommercially available processor. Processor 410 may also representmultiple parallel or distributed processors working in unison.

Memory 420 may include one or more volatile (e.g., random access memory(RAM, such as DRAM, SRAM, SDRAM, etc.)) and nonvolatile (e.g., ROM, harddrive, flash drive, CDROM, etc.), removable, and/or non-removablestorage components, such as magnetic, optical, or flash storage, and maybe integrated in whole or in part with the processor 410. These andother components may reside on devices located elsewhere on a network orin a cloud arrangement. Further, the memory 420 may take the form of anon-transitory computer-readable storage medium, having stored thereonprogram instructions (e.g., compiled or non-compiled program logicand/or machine code) that, when executed by the processor 410, cause thedevice 400 to perform one or more functions or acts, such as thosedescribed in this disclosure. Such program instructions may define or bepart of a discrete software application that can be executed in responseto certain inputs received from the user interface 430 and/orcommunication interface 440, for instance. Memory 420 may also storeother types of information or data, such as those types describedthroughout this disclosure.

User interface 430 may facilitate interaction with a user of the device,if applicable. As such, user interface 430 may include input componentssuch as a keyboard, a keypad, a mouse, a touch-sensitive panel, amicrophone, and a camera, and output components such as a display screen(which, for example, may be combined with a touch-sensitive panel), asound speaker, and a haptic feedback system. The user interface 430 mayalso comprise devices that communicate with inputs or outputs, such as ashort-range transceiver (RFID, Bluetooth, etc.), a telephonic interface,a cellular communication port, a router, or other types of networkcommunication equipment. The user interface 430 may be internal to thecomputing device 400, or may be external and connected wirelessly or viaconnection cable, such as through a universal serial bus port.

Communication interface 440 may be configured to allow the device 400 tocommunicate with one or more devices (or systems) according to one ormore protocols. In one example, the communication interface 440 may be awired interface, such as an Ethernet interface or a high definitionserial-digital-interface (HD-SDI). As another example, the communicationinterface 440 may be a wireless interface, such as a cellular or Wi-Fiinterface. In some examples, each of a plurality of computing devices400 and/or other devices or systems on a network may be configured touse the Internet protocol suite (TCP/IP) to communicate with oneanother. It will be understood, however, that a variety of networkprotocols could also be employed, such as IEEE 802.11 Wi-Fi, addressresolution protocol ARP, spanning-tree protocol STP, orfiber-distributed data interface FDDI. It will also be understood thatwhile some embodiments may include computing device 400 having abroadband or wireless connection to the Internet (such as DSL, Cable,Wireless, T-1, T-3, OC3 or satellite, etc.), the principles of theinvention are also practicable with a dialup connection through astandard modem or other connection means. Wireless network connectionsare also contemplated, such as wireless Ethernet, satellite, infrared,radio frequency, Bluetooth, near field communication, and cellularnetworks.

In the context of this document, a “computer-readable medium” may be anymeans that can store, communicate, propagate, or transport data objectsfor use by or in connection with the systems and methods as describedherein. The computer readable medium may be for example, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, device, propagation medium, or any other device with similarfunctionality. More specific examples (a non-exhaustive list) of thecomputer-readable medium would include the following: an electricalconnection (electronic) having one or more wires, a random access memory(RAM) (electronic), a read-only memory (ROM) (electronic), an erasableprogrammable read-only memory (EPROM, EEPROM, or Flash memory)(electronic), an optical fiber (optical), and a portable compact discread-only memory (CDROM) (optical). Note that the computer-readablemedium could even be paper or another suitable medium upon which theprogram is printed, as the program can be electronically captured, via,for instance, optical scanning of the paper or other medium, thencompiled, interpreted or otherwise processed in a suitable manner ifnecessary, and stored in a computer memory. The systems, devices, andmethods can be embodied in any type of computer-readable medium for useby or in connection with an instruction execution system or apparatus,such as a computer.

FIG. 5 illustrates example method 500 for generating a cross-section ofa 3D model, according to embodiments of the present disclosure. Method500 may be performed by one or more computing devices or systems, suchas the system described with respect to FIGS. 1-3 . The flowchart ofFIG. 5 is representative of machine readable instructions that arestored in memory (such as memory 420 of computing device 400) and mayinclude one or more programs which, when executed by a processor (suchas processor 410 of computing device 400) may cause one or more systemsor devices to carry out one or more functions described herein. Whilethe example program is described with reference to the flowchartillustrated in FIG. 5 , many other methods for carrying out thefunctions described herein may alternatively be used. For example, theorder of execution of the blocks may be rearranged or performed inseries or parallel with each other, blocks may be changed, eliminated,and/or combined to perform method 500. Further, because method 500 isdisclosed in connection with the components of FIGS. 1-4 , somefunctions of those components will not be described in detail below.

FIG. 5 begins at block 502. At block 504, method 500 includesdetermining a cross-section plane intersecting the 3D model. This can bedone in any of various ways, such as those described above with respectto FIGS. 1-3 .

At block 506, method 500 includes performing ray-tracing by passing eachof a plurality of rays through a corresponding pixel of a viewing planesuch that each ray intersects the cross section plane.

At block 508, method 500 includes determining one or more of theplurality of rays that are within a threshold distance of the 3D modelat their respective points of intersection with the cross section plane.

At block 510, method 500 includes highlighting pixels corresponding tothe determined rays the same color. This enables a stencil to be createdthat includes only those pixels that correspond to rays which intersectthe 3D model, or are within a threshold distance of the model, at thepoint of intersection with the cross-section plane.

At block 512, method 500 includes rendering the highlighted pixels. Thiscauses the stencil of the 3D model components that intersect thecross-section plane to be displayed. Method 500 then ends at block 514.

While one or more specific embodiments have been illustrated anddescribed in connection with the invention(s), it is understood that theinvention(s) should not be limited to any single embodiment, but ratherconstrued in breadth and scope in accordance with recitation of theappended claims.

What is claimed is:
 1. A method of generating a cross-section of a 3Dmodel comprising: determining a cross-section plane intersecting the 3Dmodel; performing ray-tracing by passing each of a plurality of raysthrough a corresponding pixel of a viewing plane such that each rayintersects the cross-section plane; determining one or more rays thatare within a threshold distance of the 3D model at their respectivepoints of intersection with the cross section plane; and highlightingpixels corresponding to the determined rays.
 2. The method of claim 1,wherein the cross-section plane defines a front side and a back side ofthe 3D model, and wherein performing ray-tracing further comprises:determining a first intersection between each of the plurality of raysand the 3D model from the perspective of the viewing plane; andtruncating each of the plurality of rays such that the firstintersection between each of the plurality of rays and the 3D modeloccurs either at the cross-section plane or on the back side.
 3. Themethod of claim 2, further comprising: determining, for each of theplurality of rays, a corresponding pixel color based on the intersectionof each of the plurality of rays with the 3D model; rendering pixelsbased on the corresponding pixel color; and, highlighting pixelscorresponding to the determined rays the same color.
 4. The method ofclaim 1, wherein, for each ray, the threshold distance comprises adistance in 2 dimensions extending, within the cross-section plane, fromthe point of intersection between the ray and the cross-section plane.5. The method of claim 1, wherein the threshold distance and a viewingdistance have a direct relationship such that the threshold distanceincreases as the viewing distance increases.
 6. The method of claim 1,further comprising: selecting a geometric surface of the 3D model,wherein selecting the geometric surface comprises: selecting a pixel ofthe viewing plane; determining a closest highlighted pixel correspondingto the selected pixel of the viewing plane; and selecting the geometricsurface of the 3D model corresponding to the closest highlighted pixel.7. The method of claim 6, further comprising: determining a distancebetween a first geometric surface and a second geometric surface of the3D model, where determining the distance comprises: selecting a firstpixel of the viewing plane; determining a first closest highlightedpixel corresponding to the first selected pixel of the viewing plane;selecting the first geometric surface of the 3D model corresponding tothe first closest highlighted pixel; selecting a second pixel of theviewing plane; determining a second closest highlighted pixelcorresponding to the second selected pixel of the viewing plane;selecting the second geometric surface of the 3D model corresponding tothe second closest highlighted pixel; and measuring the distance betweenthe selected first geometric surface and the selected second geometricsurface.
 8. The method of claim 1, further comprising: separating the 3Dmodel into a plurality of component parts; separately, for two or moreof the component parts: determining the cross-section plane intersectingthe component part of the 3D model; performing ray-tracing by passingeach of the plurality of rays through the corresponding pixel of theviewing plane such that each ray intersects the cross-section plane;determining one or more rays that are within the threshold distance ofthe component part of the 3D model at their respective points ofintersection with the cross section plane; and highlighting pixelscorresponding to the determined rays the same color, and combining thehighlighted pixels from each of the two or more component parts into asingle image.
 9. A non-transitory, computer-readable medium, havinginstructions stored thereon that, when, executed by a processor, causethe performance of a set of acts for generating a cross-section of a 3Dmodel, the set of acts comprising: determining a cross-section planeintersecting the 3D model; performing ray-tracing by passing each of aplurality of rays through a corresponding pixel of a viewing plane suchthat each ray intersects the cross-section plane; determining one ormore rays that are within a threshold distance of the 3D model at theirrespective points of intersection with the cross section plane; andhighlighting pixels corresponding to the determined rays.
 10. Thenon-transitory, computer-readable medium of claim 9, wherein thecross-section plane defines a front side and a back side of the 3Dmodel, and wherein performing ray-tracing further comprises: determininga first intersection between each of the plurality of rays and the 3Dmodel from the perspective of the viewing plane; and truncating each ofthe plurality of rays such that the first intersection between each ofthe plurality of rays and the 3D model occurs either at thecross-section plane or on the back side.
 11. The non-transitory,computer-readable medium of claim 10, the set of acts furthercomprising: determining, for each of the plurality of rays, acorresponding pixel color based on the intersection of each of theplurality of rays with the 3D model; rendering pixels based on thecorresponding pixel color; and, highlighting pixels corresponding to thedetermined rays the same color.
 12. The non-transitory,computer-readable medium of claim 10, wherein, for each ray, thethreshold distance comprises a distance in 2 dimensions extending,within the cross-section plane, from the point of intersection betweenthe ray and the cross-section plane.
 13. The non-transitory,computer-readable medium of claim 9, wherein the threshold distance anda viewing distance have a direct relationship such that the thresholddistance increases as the viewing distance increases.
 14. Thenon-transitory, computer-readable medium of claim 9, the set of actsfurther comprising: selecting a geometric surface of the 3D model,wherein selecting the geometric surface comprises: selecting a pixel ofthe viewing plane; determining a closest highlighted pixel correspondingto the selected pixel of the viewing plane; and selecting the geometricsurface of the 3D model corresponding to the closest highlighted pixel.15. The non-transitory, computer-readable medium of claim 14, the set ofacts further comprising: determining a distance between a firstgeometric surface and a second geometric surface of the 3D model, wheredetermining the distance comprises: selecting a first pixel of theviewing plane; determining a first closest highlighted pixelcorresponding to the first selected pixel of the viewing plane;selecting the first geometric surface of the 3D model corresponding tothe first closest highlighted pixel; selecting a second pixel of theviewing plane; determining a second closest highlighted pixelcorresponding to the second selected pixel of the viewing plane;selecting the second geometric surface of the 3D model corresponding tothe second closest highlighted pixel; and measuring the distance betweenthe selected first geometric surface and the selected second geometricsurface.
 16. The non-transitory, computer-readable medium of claim 9,the set of acts further comprising: separating the 3D model into aplurality of component parts; separately, using two or more processorsfor two or more of the component parts: determining the cross-sectionplane intersecting the component part of the 3D model; performingray-tracing by passing each of the plurality of rays through thecorresponding pixel of the viewing plane such that each ray intersectsthe cross-section plane; determining one or more rays that are withinthe threshold distance of the component part of the 3D model at theirrespective points of intersection with the cross section plane; andhighlighting pixels corresponding to the determined rays the same color,and combining the highlighted pixels from each of the two or morecomponent parts into a single image.
 17. A system comprising: aprocessor; and a memory device that stores a plurality of instructionsthat, when executed by the processor, cause the processor to: determinea cross-section plane intersecting a 3D model; perform ray-tracing bypassing each of a plurality of rays through a corresponding pixel of aviewing plane such that each ray intersects the cross-section plane;determine one or more rays that are within a threshold distance of the3D model at their respective points of intersection with thecross-section plane; and highlight pixels corresponding to thedetermined rays.
 18. The system of claim 17, wherein the cross-sectionplane defines a front side and a back side of the 3D model, and thememory device stores a plurality of further instructions that, whenexecuted by the processor performing ray-tracing, cause the processorto: determine a first intersection between each of the plurality of raysand the 3D model from the perspective of the viewing plane; and truncateeach of the plurality of rays such that the first intersection betweeneach of the plurality of rays and the 3D model occurs either at thecross-section plane or on the back side.
 19. The system of claim 18,wherein the memory device stores a plurality of further instructionsthat, when executed by the processor, cause the processor to: determine,for each of the plurality of rays, a corresponding pixel color based onthe intersection of each of the plurality of rays with the 3D model;render pixels based on the corresponding pixel color; and, highlightpixels corresponding to the determined rays the same color.
 20. Thesystem of claim 17, wherein the threshold distance and a viewingdistance have a direct relationship such that the threshold distanceincreases as the viewing distance increases.
 21. The system of claim 17,wherein the memory device stores a plurality of further instructionsthat, when executed by the processor, cause the processor to: select ageometric surface of the 3D model by: selecting a pixel of the viewingplane; determining a closest highlighted pixel corresponding to theselected pixel of the viewing plane; and selecting the geometric surfaceof the 3D model corresponding to the closest highlighted pixel.
 22. Thesystem of claim 21, wherein the memory device stores a plurality offurther instructions that, when executed by the processor, cause theprocessor to: determine a distance between a first geometric surface anda second geometric surface of the 3D model by: selecting a first pixelof the viewing plane; determining a first closest highlighted pixelcorresponding to the first selected pixel of the viewing plane;selecting the first geometric surface of the 3D model corresponding tothe first closest highlighted pixel; selecting a second pixel of theviewing plane; determining a second closest highlighted pixelcorresponding to the second selected pixel of the viewing plane;selecting the second geometric surface of the 3D model corresponding tothe second closest highlighted pixel; and measuring the distance betweenthe selected first geometric surface and the selected second geometricsurface.
 23. The system of claim 17, wherein the memory device stores aplurality of further instructions that, when executed by the processor,cause the processor to: separate the 3D model into a plurality ofcomponent parts; separately, using two or more processors for two ormore of the component parts: determine the cross-section planeintersecting the component part of the 3D model; perform ray-tracing bypassing each of the plurality of rays through the corresponding pixel ofthe viewing plane such that each ray intersects the cross-section plane;determine one or more rays that are within the threshold distance of thecomponent part of the 3D model at their respective points ofintersection with the cross section plane; and highlight pixelscorresponding to the determined rays the same color, and combining thehighlighted pixels from each of the two or more component parts into asingle image.